package conexaoSocket;

import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

import scala.util.parsing.combinator.testing.Str;
import Logica.Sistema;

public class ServidorTCP {
	
	private String codificacao = "US-ASCII"; //codifiçã de caracteres adotada nas mensagens transmitidas
	List<GerenciadorDoCliente> clientes = new ArrayList<GerenciadorDoCliente>();
	
	public GerenciadorDoCliente getGerenciadorDoCliente(String nomeJogador){
		
		for(GerenciadorDoCliente gdc : clientes){
			String nome = gdc.getNomeJogador();
			if(nomeJogador.equals(nome))
				return gdc;
		}
		
		return null;
	}
	
	public static void main(String[] args) {
		ServidorTCP servidor = new ServidorTCP();
		try{
			servidor.start();
		}
		catch(Exception ex){
			ex.printStackTrace();
		}
	}
	
	public void start() throws Exception{
		ServerSocket serverSocket = new ServerSocket(6654);
		System.out.println("Servidor em execução");
		Sistema sistema = new Sistema();
		while(true){
			Socket clientSocket = serverSocket.accept();
			Socket clientSocketRetorno = serverSocket.accept();
			GerenciadorDoCliente client = new GerenciadorDoCliente(clientSocketRetorno, clientSocket, sistema, codificacao, this);
			clientes.add(client);
			Thread thread = new Thread(client);
			thread.start();
			System.out.println("Iniciada conexão com o IP " + clientSocket.getInetAddress().getHostAddress());
		}
	}
}
